home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / workbench werkzeuge / icon tools / deft ii / sources / arexx.em < prev    next >
Text File  |  1996-04-07  |  11KB  |  337 lines

  1. OPT MODULE
  2.  
  3.  
  4. /*/////////////////////////////////////////////////////////////////////////////
  5. ///////////////////////////////////////////////////////////// Macro files /////
  6. ///////////////////////////////////////////////////////////////////////////////
  7. MACROS 'MUI.pma'
  8. */
  9.  
  10.  
  11. ->*****
  12. ->** External modules
  13. ->*****
  14. MODULE 'muimaster' , 'libraries/mui'
  15. MODULE 'tools/boopsi'
  16. MODULE 'utility/tagitem' , 'utility/hooks'
  17. MODULE 'tools/installhook'
  18.  
  19. MODULE '*Locale'
  20. MODULE '*Defs'
  21. MODULE '*Errors'
  22. MODULE '*GUI_MUIB'
  23. MODULE '*Work'
  24. MODULE '*PrefsFile'
  25. MODULE '*Paths'
  26. MODULE '*DefaultTools'
  27.  
  28.  
  29. ->*****
  30. ->** Global variables
  31. ->*****
  32. EXPORT DEF deftII                    :    PTR TO obj_app
  33. EXPORT DEF cat                        :    PTR TO catalog_DeftII
  34. EXPORT DEF modified                    :    LONG
  35. EXPORT DEF current_edited_path        :    LONG
  36. EXPORT DEF current_edited_def_tool    :    LONG
  37.  
  38.  
  39. /********************************************************************************************************/
  40. /* Initializes the object which gives arexx information needed for the MUI application at creation time */
  41. /********************************************************************************************************/
  42. EXPORT PROC init_arexx()
  43.  
  44.     DEF arexx : PTR TO obj_arexx
  45.     DEF arexx_commands : PTR TO mui_command
  46.     DEF number_paths_hook            :    PTR TO hook
  47.     DEF number_default_tools_hook    :    PTR TO hook
  48.     DEF add_path_hook                :    PTR TO hook
  49.     DEF add_default_tool_hook        :    PTR TO hook
  50.     DEF delete_path_hook            :    PTR TO hook
  51.     DEF delete_default_tool_hook    :    PTR TO hook
  52.     DEF get_path_hook                :    PTR TO hook
  53.     DEF get_old_default_tool_hook    :    PTR TO hook
  54.     DEF get_new_default_tool_hook    :    PTR TO hook
  55.     DEF save_prefs_hook                :    PTR TO hook
  56.     DEF go_hook                        :    PTR TO hook
  57.     DEF loose_modifications_hook    :    PTR TO hook
  58.  
  59.     NEW    arexx , arexx_commands[ 13 ] ,
  60.         number_paths_hook            ,
  61.         number_default_tools_hook    ,
  62.         add_path_hook                ,
  63.         add_default_tool_hook        ,
  64.         delete_path_hook            ,
  65.         delete_default_tool_hook    ,
  66.         get_path_hook                ,
  67.         get_old_default_tool_hook    ,
  68.         get_new_default_tool_hook    ,
  69.         save_prefs_hook                ,
  70.         go_hook                        ,
  71.         loose_modifications_hook
  72.  
  73.     installhook(    number_paths_hook            ,     {number_paths}                )
  74.     installhook(    number_default_tools_hook    ,    {number_default_tools}        )
  75.     installhook(    add_path_hook                ,    {arexx_add_path}            )
  76.     installhook(    add_default_tool_hook        ,    {arexx_add_default_tool}    )
  77.     installhook(    delete_path_hook            ,    {arexx_delete_path}            )
  78.     installhook(    delete_default_tool_hook    ,    {arexx_delete_default_tool}    )
  79.     installhook(    get_path_hook                ,    {get_path}                    )
  80.     installhook(    get_old_default_tool_hook    ,    {get_old_default_tool}        )
  81.     installhook(    get_new_default_tool_hook    ,    {get_new_default_tool}        )
  82.     installhook(    save_prefs_hook                ,    {arexx_save_prefs}            )
  83.     installhook(    go_hook                        ,    {arexx_go}                    )
  84.     installhook(    loose_modifications_hook    ,    {loose_modifications}        )
  85.  
  86.     arexx.commands := arexx_commands
  87.     init_command( arexx.commands[] , 'number_paths' , '' , 0 , number_paths_hook  )
  88.     init_command( arexx.commands[1] , 'number_default_tools' , '' , 0 , number_default_tools_hook )
  89.     init_command( arexx.commands[2] , 'add_path' , 'PATH/A' , 1 , add_path_hook )
  90.     init_command( arexx.commands[3] , 'add_default_tool' , 'OLD/A,NEW/A' , 2 , add_default_tool_hook )
  91.     init_command( arexx.commands[4] , 'delete_path' , 'PATH/N/A' , 1 , delete_path_hook )
  92.     init_command( arexx.commands[5] , 'delete_default_tool' , 'DEFAULT_TOOL=DT/N/A' , 1 , delete_default_tool_hook )
  93.     init_command( arexx.commands[6] , 'get_path' , 'PATH/N/A' , 1 , get_path_hook )
  94.     init_command( arexx.commands[7] , 'get_old_default_tool' , 'OLD_DEFAULT_TOOL=ODT/N/A' , 1 , get_old_default_tool_hook)
  95.     init_command( arexx.commands[8] , 'get_new_default_tool' , 'NEW_DEFAULT_TOOL=NDT/N/A' , 1 , get_new_default_tool_hook )
  96.     init_command( arexx.commands[9] , 'save_prefs' , '' , 0 , save_prefs_hook )
  97.     init_command( arexx.commands[10] , 'go' , '' , 0 , go_hook )
  98.     init_command( arexx.commands[11] , 'loose_modifications' , '' , 0 , loose_modifications_hook )
  99.     installhook( arexx.error , {arexx_error} )
  100.  
  101. ENDPROC arexx
  102.  
  103.  
  104. /***************************************/
  105. /** Initializes an mui_command object **/
  106. /***************************************/
  107. PROC init_command( command : PTR TO mui_command , name : PTR TO CHAR , template : PTR TO CHAR , parameters , hook_func )
  108.  
  109.     command.mc_name := name
  110.     command.mc_template := template
  111.     command.mc_parameters := parameters
  112.     command.mc_hook := hook_func
  113.  
  114. ENDPROC
  115.  
  116.  
  117. /*************************************************************************/
  118. /* Arexx hook function which returns the number of paths in the listview */
  119. /*************************************************************************/
  120. PROC number_paths()
  121.  
  122.     DEF number_entries
  123.     DEF return_string[ 10 ] : STRING
  124.  
  125.     get( deftII.lv_paths , MUIA_List_Entries , {number_entries} )
  126.     set( deftII.app , MUIA_Application_RexxString , StringF( return_string , '\d' , number_entries ) )
  127.  
  128. ENDPROC 0
  129.  
  130.  
  131. /*********************************************************************************/
  132. /* Arexx hook function which returns the number of default_tools in the listview */
  133. /*********************************************************************************/
  134. PROC number_default_tools()
  135.  
  136.     DEF number_entries
  137.     DEF return_string[ 10 ] : STRING
  138.  
  139.     get( deftII.lv_default_tools , MUIA_List_Entries , {number_entries} )
  140.     set( deftII.app , MUIA_Application_RexxString , StringF( return_string , '\d' , number_entries ) )
  141.  
  142. ENDPROC 0
  143.  
  144.  
  145. /*********************************************************/
  146. /* Arexx hook function to add a path inside the listview */
  147. /*********************************************************/
  148. PROC arexx_add_path( hook , obj , arg_array : PTR TO LONG )
  149.  
  150.     set( deftII.wi_main , MUIA_Window_ActiveObject , deftII.lv_paths )
  151.  
  152. ENDPROC add_path( arg_array[] )
  153.  
  154.  
  155. /*****************************************************************/
  156. /* Arexx hook function to add a default tool inside the listview */
  157. /*****************************************************************/
  158. PROC arexx_add_default_tool( hook , obj , arg_array : PTR TO LONG )
  159.  
  160.     set( deftII.wi_main , MUIA_Window_ActiveObject , deftII.lv_default_tools )
  161.  
  162. ENDPROC add_default_tool( arg_array[] , arg_array[ 1 ] )
  163.  
  164.  
  165. /************************************************************/
  166. /* Arexx hook function to delete a path inside the listview */
  167. /************************************************************/
  168. PROC arexx_delete_path( hook , obj , arg_array : PTR TO LONG )
  169.  
  170.     DEF entry , number_entries , return = 0
  171.  
  172.     entry := Long( arg_array[] )
  173.     get( deftII.lv_paths , MUIA_List_Entries , {number_entries} )
  174.  
  175.     IF ( entry >= 0 ) AND ( entry < number_entries )
  176.  
  177.         set( deftII.lv_paths , MUIA_List_Quiet , MUI_TRUE )
  178.         domethod( deftII.lv_paths , [ MUIM_List_Remove , entry ] )
  179.         set( deftII.lv_paths , MUIA_List_Quiet , FALSE )
  180.  
  181.     ELSE
  182.  
  183.         return := 10
  184.  
  185.     ENDIF
  186.  
  187.     current_edited_path := NO_CURRENT_EDITED_PATH
  188.     set( deftII.stR_PA_path , MUIA_String_Contents , '' )
  189.  
  190.     set( deftII.wi_main , MUIA_Window_ActiveObject , deftII.lv_paths )
  191.  
  192. ENDPROC return
  193.  
  194.  
  195. /********************************************************************/
  196. /* Arexx hook function to delete a default tool inside the listview */
  197. /********************************************************************/
  198. PROC arexx_delete_default_tool( hook , obj , arg_array : PTR TO LONG )
  199.  
  200.     DEF entry , number_entries , return = 0
  201.  
  202.     entry := Long( arg_array[] )
  203.     get( deftII.lv_default_tools , MUIA_List_Entries , {number_entries} )
  204.  
  205.     IF ( entry >= 0 ) AND ( entry < number_entries )
  206.  
  207.         set( deftII.lv_default_tools , MUIA_List_Quiet , MUI_TRUE )
  208.         domethod( deftII.lv_default_tools , [ MUIM_List_Remove , entry ] )
  209.         set( deftII.lv_default_tools , MUIA_List_Quiet , FALSE )
  210.  
  211.     ELSE
  212.  
  213.         return := 10
  214.  
  215.     ENDIF
  216.  
  217.     current_edited_def_tool := NO_CURRENT_EDITED_DEF_TOOL
  218.     domethod( deftII.app , [ MUIM_MultiSet , MUIA_String_Contents , '' ,
  219.             deftII.stR_old_def_tool , deftII.stR_PO_new_def_tool , NIL ] )
  220.  
  221.     set( deftII.wi_main , MUIA_Window_ActiveObject , deftII.lv_default_tools )
  222.  
  223. ENDPROC return
  224.  
  225.  
  226. /*******************************************************/
  227. /* Arexx hook function to get from the listview a path */
  228. /*******************************************************/
  229. PROC get_path( hook , obj , arg_array : PTR TO LONG )
  230.  
  231.     DEF entry_number , entry : PTR TO CHAR
  232.     DEF number_entries , return = 0
  233.  
  234.     entry_number := Long( arg_array[] )
  235.     get( deftII.lv_paths , MUIA_List_Entries , {number_entries} )
  236.  
  237.     IF ( entry_number >= 0 ) AND ( entry_number < number_entries )
  238.  
  239.         domethod( deftII.lv_paths , [ MUIM_List_GetEntry , entry_number , {entry} ] )
  240.         set( deftII.app , MUIA_Application_RexxString , entry )
  241.  
  242.     ELSE
  243.  
  244.         return := 10
  245.  
  246.     ENDIF
  247.  
  248. ENDPROC return
  249.  
  250.  
  251. /********************************************************************/
  252. /* Arexx hook function to get from the listview an old default tool */
  253. /********************************************************************/
  254. PROC get_old_default_tool( hook , obj , arg_array : PTR TO LONG )
  255.  
  256.     DEF entry_number , entry : PTR TO default_tool
  257.     DEF number_entries , return = 0
  258.  
  259.     entry_number := Long( arg_array[] )
  260.     get( deftII.lv_default_tools , MUIA_List_Entries , {number_entries} )
  261.  
  262.     IF ( entry_number >= 0 ) AND ( entry_number < number_entries )
  263.  
  264.         domethod( deftII.lv_default_tools , [ MUIM_List_GetEntry , entry_number , {entry} ] )
  265.         set( deftII.app , MUIA_Application_RexxString , entry.old )
  266.  
  267.     ELSE
  268.  
  269.         return := 10
  270.  
  271.     ENDIF
  272.  
  273. ENDPROC return
  274.  
  275.  
  276. /*******************************************************************/
  277. /* Arexx hook function to get from the listview a new default tool */
  278. /*******************************************************************/
  279. PROC get_new_default_tool( hook , obj , arg_array : PTR TO LONG )
  280.  
  281.     DEF entry_number , entry : PTR TO default_tool
  282.     DEF number_entries , return = 0
  283.  
  284.     entry_number := Long( arg_array[] )
  285.     get( deftII.lv_default_tools , MUIA_List_Entries , {number_entries} )
  286.  
  287.     IF ( entry_number >= 0 ) AND ( entry_number < number_entries )
  288.  
  289.         domethod( deftII.lv_default_tools , [ MUIM_List_GetEntry , entry_number , {entry} ] )
  290.         set( deftII.app , MUIA_Application_RexxString , entry.new )
  291.  
  292.     ELSE
  293.  
  294.         return := 10
  295.  
  296.     ENDIF
  297.  
  298. ENDPROC return
  299.  
  300.  
  301. /*********************************************/
  302. /* Saves the preferences file from the Arexx */
  303. /*********************************************/
  304. PROC arexx_save_prefs() IS save_prefs( FALSE )
  305.  
  306.  
  307. /*************************************************************************/
  308. /* The function which runs the icon default tool replacements from Arexx */
  309. /*************************************************************************/
  310. PROC arexx_go()
  311.  
  312.     domethod( deftII.app , [ MUIM_MultiSet , MUIA_Disabled , MUI_TRUE ,
  313.             deftII.gr_paths , deftII.gr_default_tools ,
  314.             deftII.bt_go , deftII.bt_save_prefs , deftII.bt_about , deftII.bt_quit , NIL ] )
  315.  
  316. ENDPROC go( FALSE )
  317.  
  318.  
  319. /********************************************************************/
  320. /* Hook function to loose any modification track of the preferences */
  321. /********************************************************************/
  322. PROC loose_modifications()
  323.  
  324.     modified := FALSE
  325.  
  326. ENDPROC 0
  327.  
  328.  
  329. /*********************************************************************************/
  330. /* This hook function is called when an unknown arexx command is sent to Deft II */
  331. /*********************************************************************************/
  332. PROC arexx_error()
  333.  
  334.     deftII_error( cat.msg_Unknown_Arexx_Command.getstr() )
  335.  
  336. ENDPROC 100
  337.